package xml.src.dom4j;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

/**
 * 导入dom4j框架,解析xml文件中的数据
 */
public class Dom4HelloWorldDemo {
    @Test
    public void parseXMLData() throws Exception {
        //创建一个解析器对象,代表了整个dom4j框架
        SAXReader saxReader = new SAXReader();
        //把XML文件加载到内存中,成为一个Documents文档对象
//        Document document = saxReader.read("xml\\src\\Contacts.xml");
        //用类对象的getResourceAsStream方法填写路径时候/直接去src文件下找,不经过包名
        InputStream is = Dom4HelloWorldDemo.class.getResourceAsStream("/Contacts.xml");
        Document document = saxReader.read(is);

        //获取根元素
        Element root = document.getRootElement();
        System.out.println(root.getName());

        //取根元素下所有的子元素
        List<Element> sonEles = root.elements();
        for (Element sonEle : sonEles) {
            System.out.println(sonEle.getName());
        }

        System.out.println("--------------------");
        //拿某个子元素(第一次)
        Element contact = root.element("contact");
        System.out.println(contact.getName());
        //获取子元素文本
        System.out.println(contact.elementText("name"));
        //拿文本去掉前后空格
        System.out.println(contact.elementTextTrim("name"));
        //获取元素属性值
        Attribute idAttr = contact.attribute("id");
        System.out.println(idAttr.getName() + "->" + idAttr.getValue());
        //直接提取属性值
        System.out.println(contact.attributeValue("id"));
        System.out.println(contact.attributeValue("vip"));

        //获取档期那元素下的子元素对象
        Element email = contact.element("email");
        System.out.println(email.getText());
    }
}
